Ext.onReady(function ()
{
	//获得数据store
	var courseData = Ext.create('Ext.data.Store',
		{
			model : 'CourseModel',
			proxy :
			{
				type : 'ajax',
				url : basePath + 'course/GetAllCourse',
				reader :
				{
					type : 'json',
					root : 'root'
				}
			},
			autoLoad : true
		}
		);

	function addForm()
	{
		if (addAllCourseForm.getForm().isValid())
		{
			addAllCourseForm.getForm().submit(
			{
				url : basePath + 'course/addNewCourse',
				method : 'POST',
				waitMsg : '正在添加，请稍候...',
				waitTitle : '添加中',
				timeout : 300000,
				params : addAllCourseForm.getValues(),
				success : function (addAllCourseForm, action)
				{
					var isSuc = action.result.success;
					if (isSuc)
					{
						Ext.Msg.alert('添加成功！', '已经完成添加，请进入课程安排进行排课！');
						courseGrid.store.removeAll();
						courseGrid.store.reload();
						addWindow.close();
					}
					else
					{
						var res = action.result.res;
						Ext.Msg.alert('添加失败', res);
					}
				},
				failure : function (addAllCourseForm, action)
				{
					var res = action.result.res;
					Ext.Msg.alert('添加失败', res);
				}
			}
			);
		}
	}

	function editForm()
	{
		if (editCourseForm.getForm().isValid())
		{
			editCourseForm.getForm().submit(
			{
				url : basePath + 'course/editCourse',
				method : 'POST',
				waitMsg : '正在修改，请稍候...',
				waitTitle : '修改中',
				timeout : 300000,
				params : editCourseForm.getValues(),
				success : function (editCourseForm, action)
				{
					var isSuc = action.result.success;
					if (isSuc)
					{
						Ext.Msg.alert('修改成功！', '已经完成修改！');
						courseGrid.store.removeAll();
						courseGrid.store.reload();
						editWindow.close();
					}
					else
					{
						var res = action.result.res;
						Ext.Msg.alert('修改失败', res);
					}
				},
				failure : function (addAllCourseForm, action)
				{
					var res = action.result.res;
					Ext.Msg.alert('修改失败', res);
				}
			}
			);
		}
	}

	var columns = [
		{
			header : '名称',
			dataIndex : 'name',
			width : '20%'
		},
		{
			header : '课程代码',
			dataIndex : 'code',
			width : '20%'
		},
		{
			header : '备注',
			dataIndex : 'comment',
			width : '60%'
		}
	];

	var courseNameBox = Ext.create('Ext.form.ComboBox',
		{
			fieldLabel : '要修改的课程:',
			emptyText : '请选择要修改的课程',
			labelAlign : 'right',
			labelWidth : 100,
			width : 400,
			store : courseData,
			queryMode : 'local',
			editable : false,
			name : 'course_id',
			hiddenName : 'course_id',
			displayField : 'name',
			valueField : 'course_id',
			blankText : '不能为空',
			allowBlank : false,
			listeners :
			{
				'select' : function ()
				{
					var index = courseData.find('course_id', courseNameBox.getValue());
					//获取对应描述信息
					nameText.setValue(courseData.getAt(index).get('name'));
					codeText.setValue(courseData.getAt(index).get('code'));
					commentText.setValue(courseData.getAt(index).get('comment'));
					typeComboBox.setValue(states.getAt(courseData.getAt(index).get('type')));
				}
			}
		}
		);

	var states = Ext.create('Ext.data.Store',
		{
			fields : ['name', 'value'],
			data : [
				{
					"name" : "普通课程",
					"value" : "0"
				},
				{
					"name" : "虚拟实验课程",
					"value" : "1"
				}
			]
		}
		);
	var typeComboBox = Ext.create('Ext.form.ComboBox',
		{
			allowBlank : false,
			name : 'type',
			emptyText : '',
			fieldLabel : '课程类型',
			store : states,
			queryMode : 'local',
			editable : false,
			displayField : 'name',
			valueField : 'value',
			labelAlign : 'right'
		}
		);
	var newTypeComboBox = Ext.create('Ext.form.ComboBox',
		{
			allowBlank : false,
			name : 'type',
			emptyText : '',
			fieldLabel : '课程类型',
			store : states,
			queryMode : 'local',
			editable : false,
			displayField : 'name',
			valueField : 'value',
			labelAlign : 'right'
		}
		);
	
	var courseGrid = new Ext.grid.GridPanel(
		{
			title : '课程列表',
			frame : false,
			selModel : new Ext.selection.RowModel(),
			store : courseData,
			enableHdMenu : false,
			enableColumnHide : false,
			columnLines : true,
			columns : columns,
			stripeRows : true,
			loadMask : true,
			renderTo : 'showAllCourseDiv',
			listeners :
			{
				'select' : function (selModel, record, index, eOpts)
				{
					selRecord = record;
				}
			},
			buttons : [
				{
					text : '新增',
					handler : function ()
					{
						addWindow.show();
					}
				},
				{
					text : '编辑',
					handler : function ()
					{
						var index = courseData.find('course_id', selRecord.get('course_id'));
						courseNameBox.select(selRecord);
						nameText.setValue(courseData.getAt(index).get('name'));
						codeText.setValue(courseData.getAt(index).get('code'));
						commentText.setValue(courseData.getAt(index).get('comment'));
						typeComboBox.setValue(states.getAt(courseData.getAt(index).get('type')));
						editWindow.show();
					}
				}
			]
		}
		);

	var nameText = new Ext.form.Text(
		{
			allowBlank : true,
			fieldLabel : '课程名称',
			name : 'name',
			emptyText : '',
			width : 400,
			labelAlign : 'right'
		}
		);
	var codeText = new Ext.form.Text(
		{
			allowBlank : true,
			fieldLabel : '课号',
			name : 'code',
			emptyText : '',
			width : 400,
			labelAlign : 'right'
		}
		);
	var commentText = new Ext.form.TextArea(
		{
			allowBlank : true,
			fieldLabel : '备注',
			name : 'comment',
			emptyText : '',
			width : 400,
			height : 100,
			labelAlign : 'right'
		}
		);

	var newNameText = new Ext.form.Text(
		{
			allowBlank : true,
			fieldLabel : '课程名称',
			name : 'name',
			emptyText : '',
			width : 400,
			labelAlign : 'right'
		}
		);
	var newCodeText = new Ext.form.Text(
		{
			allowBlank : true,
			fieldLabel : '课程代码',
			name : 'code',
			emptyText : '',
			width : 400,
			labelAlign : 'right'
		}
		);
	var newCommentText = new Ext.form.TextArea(
		{
			allowBlank : true,
			fieldLabel : '备注',
			name : 'comment',
			emptyText : '',
			width : 400,
			height : 100,
			labelAlign : 'right'
		}
		);

	var tmp = Ext.getCmp('addAllCourseForm');
	if (tmp != null)
		tmp.destroy();
	var addAllCourseForm = Ext.create("Ext.form.FormPanel",
		{
			title : '添加一门新课程',
			frame : false,
			defaultType : 'textfield',
			defaults :
			{
				labelWidth : 100,
				labelAlign : 'right'
			},
			items : [
				newNameText,
				newCodeText,
				newCommentText,
				newTypeComboBox
			],
			buttons : [
				{
					text : '确定',
					handler : function ()
					{
						addForm();
					}
				}
			]
		}
		);

	var addWindow = Ext.create('Ext.window.Window',
		{
			title : '新增课程',
			height : 350,
			width : 500,
			layout : 'fit',
			modal : true,
			closeAction : 'hide',
			items : [addAllCourseForm]
		}
		);

	function delForm(Button)
	{
		if (Button != 'yes')
			return;
		editCourseForm.getForm().submit(
		{
			url : basePath + 'course/deleteCourse',
			method : 'POST',
			waitMsg : '正在删除，请稍候...',
			waitTitle : '删除中',
			timeout : 300000,
			params : {},
			success : function (editCourseForm, action)
			{
				var isSuc = action.result.success;
				if (isSuc)
				{
					courseNameBox.store.removeAll();
					courseNameBox.store.reload();
					courseNameBox.setValue('');
					courseGrid.store.removeAll();
					courseGrid.store.reload();
					Ext.Msg.alert('删除成功！', '已经成功删除！');
					editWindow.close();
				}
				else
				{
					var res = action.result.res;
					Ext.Msg.alert('删除失败', res);
				}
			},
			failure : function (editCourseForm, action)
			{
				var res = action.result.res;
				Ext.Msg.alert('删除失败', res);
			}
		}
		);
	}

	var tmp = Ext.getCmp('editCourseForm');
	if (tmp != null)
		tmp.destroy();
	var editCourseForm = Ext.create("Ext.form.FormPanel",
		{
			title : '编辑已存在的课程',
			frame : false,
			defaultType : 'textfield',
			defaults :
			{
				labelWidth : 100,
				labelAlign : 'right'
			},
			items : [
				courseNameBox,
				nameText,
				codeText,
				commentText,
				typeComboBox
			],
			buttons : [
				{
					text : '确定',
					handler : function ()
					{
						editForm();
					}
				},
				{
					text : '删除',
					handler : function ()
					{
						Ext.Msg.show(
						{
							title : "删除",
							msg : "是否要删除？这样所有该课程的排课都会被清除",
							buttons : Ext.Msg.YESNO,
							fn : delForm,
							icon : Ext.MessageBox.QUESTION
						}
						);
					}
				}
			]
		}
		);

	var editWindow = Ext.create('Ext.window.Window',
		{
			title : '编辑课程',
			height : 400,
			width : 500,
			layout : 'fit',
			modal : true,
			closeAction : 'hide',
			items : [editCourseForm]
		}
		);
}
);
